#ifndef IMGUI_MY_ADJUST_H
#define IMGUI_MY_ADJUST_H

#include "Predictor.h"
#include "imgui_manager.h"

class DynamicKalmanAdjuster : public Control
{
  public:
    DynamicKalmanAdjuster(std::string _name, CoordPredictor &_coordPredictor);

  protected:
    // Data to edit
    float Q[6][6] = {{0}};
    float R[3][3] = {{0}};
    float cam2gyro_offset[3] = {0.0f, 0.0f, 0.0f};
    float gun2cam_offset[3] = {0.0f, 0.0f, 0.0f};

    float extra_prediction_time = 0.0f;

    void Show() override;

    void ApplyQMatrix();

    void ApplyRMatrix();

    void ApplyCam2GyroOffset();

    void ApplyGun2CamOffset();

    void ApplyExtraPredictionTime();

    CoordPredictor &coordPredictor;
};

#endif // IMGUI_MY_ADJUST_H